#!/usr/bin/env python
"""
快速启动后端服务脚本
"""

import os
import sys
import subprocess
import time
import requests

def check_port_available(port):
    """检查端口是否可用"""
    try:
        import socket
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
            s.bind(('localhost', port))
            return True
    except OSError:
        return False

def start_django_server():
    """启动Django服务器"""
    print("🚀 启动智能穿搭推荐系统后端服务...")
    
    # 检查当前目录
    if not os.path.exists('outfit_recommend'):
        print("❌ 错误：请在项目根目录运行此脚本")
        return False
    
    # 切换到Django项目目录
    os.chdir('outfit_recommend')
    
    # 检查依赖是否安装
    try:
        import django
        print("✅ Django已安装")
    except ImportError:
        print("❌ Django未安装，正在安装依赖...")
        try:
            subprocess.run([sys.executable, '-m', 'pip', 'install', '-r', 'requirements.txt'], check=True)
            print("✅ 依赖安装完成")
        except subprocess.CalledProcessError:
            print("❌ 依赖安装失败")
            return False
    
    # 检查端口8000是否可用
    if not check_port_available(8000):
        print("⚠️  端口8000已被占用，尝试使用其他端口...")
        port = 8001
        while not check_port_available(port) and port < 8010:
            port += 1
        if port >= 8010:
            print("❌ 无法找到可用端口")
            return False
        print(f"✅ 使用端口 {port}")
    else:
        port = 8000
    
    # 启动Django服务器
    try:
        print(f"🌐 启动服务器在 http://localhost:{port}")
        print("📝 按 Ctrl+C 停止服务")
        print("-" * 50)
        
        # 启动服务器
        subprocess.run([
            sys.executable, 'manage.py', 'runserver', f'0.0.0.0:{port}'
        ])
        
    except KeyboardInterrupt:
        print("\n\n🛑 服务已停止")
    except Exception as e:
        print(f"❌ 启动失败: {e}")
        return False
    
    return True

def check_services():
    """检查必要服务状态"""
    print("🔍 检查系统服务状态...")
    
    # 检查Python版本
    python_version = sys.version_info
    if python_version.major < 3 or (python_version.major == 3 and python_version.minor < 8):
        print("❌ Python版本过低，需要Python 3.8+")
        return False
    else:
        print(f"✅ Python版本: {python_version.major}.{python_version.minor}.{python_version.micro}")
    
    # 检查pip
    try:
        import pip
        print("✅ pip已安装")
    except ImportError:
        print("❌ pip未安装")
        return False
    
    # 检查虚拟环境
    if hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix):
        print("✅ 运行在虚拟环境中")
    else:
        print("⚠️  建议使用虚拟环境")
    
    return True

def main():
    """主函数"""
    print("=" * 60)
    print("🎯 智能穿搭推荐系统 - 后端服务启动器")
    print("=" * 60)
    
    # 检查系统状态
    if not check_services():
        print("\n❌ 系统检查失败，请解决上述问题后重试")
        return
    
    print("\n📋 启动前检查清单:")
    print("1. ✅ Python环境")
    print("2. ✅ 项目文件")
    print("3. ⚠️  MySQL服务 (需要手动启动)")
    print("4. ⚠️  Redis服务 (需要手动启动)")
    print("5. ⚠️  环境变量配置 (需要手动配置)")
    
    print("\n💡 提示:")
    print("- 确保MySQL服务已启动")
    print("- 确保Redis服务已启动")
    print("- 配置DASHSCOPE_API_KEY环境变量")
    print("- 运行数据库迁移: python manage.py migrate")
    
    input("\n按回车键开始启动后端服务...")
    
    # 启动服务
    start_django_server()

if __name__ == "__main__":
    main()
